// 格式化日期为 yyyy-MM-dd
export function formatDate(date) {
  const year = date.getFullYear();
  const month = String(date.getMonth() + 1).padStart(2, '0');
  const day = String(date.getDate()).padStart(2, '0');
  return `${year}-${month}-${day}`;
}
export function getDateTimeMonthDay(params) {
	const now = new Date(params);
	const month = String(now.getMonth() + 1).padStart(2, '0');
	const day = String(now.getDate()).padStart(2, '0');
	const currentTime = `${month}/${day}`;
	return currentTime;
}
export function getDateTimeMonthDayZH(params) {
	const now = new Date(params);
	const month = String(now.getMonth() + 1).padStart(2, '0');
	const day = String(now.getDate()).padStart(2, '0');
	const currentTime = `${month}月${day}日`;
	return currentTime;
}
export function getDateTimeMonthDayZHWeek(params) {
	const now = new Date(params);
	const weekdays = ['周日', '周一', '周二', '周三', '周四', '周五', '周六'];
	const weekday = weekdays[now.getDay()];
	const month = String(now.getMonth() + 1).padStart(2, '0');
	const day = String(now.getDate()).padStart(2, '0');
	const currentTime = `${month}月${day}日 (${weekday})`;
	return currentTime;
}

/**
 * 计算两个日期之间的完整夜晚数量
 * @param {string} startDateStr 起始日期(格式:YYYY-MM-DD)
 * @param {string} endDateStr 结束日期(格式:YYYY-MM-DD)
 * @returns {number} 夜晚数量(两日期午夜之间的完整天数差)
 */
export function calculateNights(startDateStr, endDateStr) {
  // 转换为UTC午夜时间戳消除时区影响[4](@ref)
  const getUTCMidnight = (dateStr) => {
	  console.log('dateStr==============',dateStr)
    const [y, m, d] = dateStr.split('-').map(Number)
    return Date.UTC(y, m - 1, d) // 月份从0开始计算
  }
  
  // 获取时间戳并计算差值
  const startUTC = getUTCMidnight(startDateStr)
  const endUTC = getUTCMidnight(endDateStr)
  const diffTime = Math.abs(endUTC - startUTC) // 取绝对值[2](@ref)
  
  // 转换为天数差(1个完整日=1个夜晚)
  const oneDay = 24 * 60 * 60 * 1000
  return Math.floor(diffTime / oneDay)
}

/* 
  * 判断指定日期是否为当前日期一个月后（考虑不同月份天数差异）
  * @param {string} targetDate 目标日期（格式：YYYY-MM-DD）
  * @returns {boolean}
 */
export function isOneMonthLater(targetDate) {
  const today = new Date();
  const target = new Date(targetDate);

  // 创建当前日期的副本并加一个月
  const nextMonthDate = new Date(today);
  nextMonthDate.setMonth(today.getMonth() + 1);
  // 处理月末边界（如1月31日加一个月应为2月28日）
  if (today.getDate() !== nextMonthDate.getDate()) {
	  console.log(nextMonthDate.getDate())
    nextMonthDate.setDate(0); // 回退到上个月的最后一天
	console.log(nextMonthDate.getDate())
  }
  // 比较日期是否一致
  return (
    target.getFullYear() === nextMonthDate.getFullYear() &&
    target.getMonth() === nextMonthDate.getMonth() &&
    target.getDate() === nextMonthDate.getDate()
  );
}

export function isOneMonthLaterDate(targetDate) {
  const today = new Date();
  today.setHours(0, 0, 0, 0); // 清除时间部分[6,7](@ref)
  
  const target = new Date(targetDate);
  target.setHours(0, 0, 0, 0); // 确保仅比较年月日[4,6](@ref)

  // 计算30天后的日期（固定天数）
  const thirtyDaysLater = new Date(today);
  thirtyDaysLater.setDate(today.getDate() + 30); // 直接加30天[3,5](@ref)
  thirtyDaysLater.setHours(0, 0, 0, 0);

  // 比较目标日期是否≥30天后的日期
  return target >= thirtyDaysLater; // 直接比较时间戳[4,6](@ref)
}